{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "a0e75ae8",
   "metadata": {},
   "source": [
    "# 快速成为深度学习全栈工程师第5课书面作业\n",
    "学号：114499\n",
    "\n",
    "**作业内容：**  \n",
    "110道python面试题：https://zhuanlan.zhihu.com/p/54430650  \n",
    "100道numpy面试题：https://blog.csdn.net/qq_39362996/article/details/90204737\n",
    "\n",
    "\n",
    "1. 简答题。Python2和Python3中range函数的区别，这样升级的目的是？  \n",
    "2. 写出你最常用的10个Linux命令（附命令解释工具：https://explainshell.com/）  \n",
    "3. 列举python2和python3的区别，并简单解释这样升级的目的是？（不可使用第一题作为例子）  \n",
    "4. 使用numpy中的random函数生成一个50x1的随机矩阵，并用numpy中的reduce求和"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9b14539d",
   "metadata": {},
   "source": [
    "## 第1题\n",
    "简答题。Python2和Python3中range函数的区别，这样升级的目的是？  \n",
    "\n",
    "答：  \n",
    "* Python2中range函数直接返回一个列表对象，在Python3中range函数返回一个迭代对象。  \n",
    "* 在python2中，执行print(range(1,10))，返回一个列表：[1,2,3,4,5,6,7,8,9]\n",
    "* 在python3中，执行print(range(1,10))，返回一个迭代对象：range(1,10)，执行print(list(range(1,10))),输出一个列表：[1,2,3,4,5,6,7,8,9]\n",
    "* python3这么做的目的是为了节省内存，因为直接创建一个列表，尤其是很大范围的，可能会消耗更多内存。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b143c406",
   "metadata": {},
   "source": [
    "## 第2题\n",
    "写出你最常用的10个Linux命令（附命令解释工具：https://explainshell.com/）  \n",
    "\n",
    "答：\n",
    "1. ls     : 查询目录及文件\n",
    "2. cd     : 改变目录\n",
    "3. cat    : 查看文本文件内存\n",
    "4. grep   : 模式匹配查找\n",
    "5. chmod   :改变文件权限\n",
    "6. cp     :拷贝文件\n",
    "7. mv     :移动文件\n",
    "8. mkdir   : 创建目录\n",
    "9. mount   : 安装一个文件系统\n",
    "10. vi    : 文本编辑"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2cc64d07",
   "metadata": {},
   "source": [
    "## 第3题\n",
    "列举python2和python3的区别，并简单解释这样升级的目的是？（不可使用第一题作为例子）\n",
    "\n",
    "答：  \n",
    "\n",
    "| 变化点      | Python2                                                      | Python3                                                      | 变化原因                                                     |\n",
    "| :---------- | :----------------------------------------------------------- | :----------------------------------------------------------- | ------------------------------------------------------------ |\n",
    "| print       | 有专门的print语句。<br>print语句可以这么写：<br>print  \"hello\" | 取消了专门的print语句。<br>增加了print函数：<br>print(\"hello\") | 看了一下官方的解释，我总结是两条：<br>1. 从应用角度，print是函数对于应用更方便，<br>    如果需要替代print（比如替代为日志记录等），<br>    通过简单的查找替换就可以； <br>2. 从语法角度，专门的print语句也不利于语法的演进。 |\n",
    "| unicode编码 | 区分Unicode 和 ASCII/非 Unicode 字符串                       | 所有的文本都是 Unicode 编码的                                | 适应普遍的大字符集的处理。                                   |\n",
    "| 除法运算    | 整数相除的结果是一个整数<br>\\>>> 1 / 2<br/>0<br/>\\>>> 1.0 / 2.0<br/>0.5 | 整数之间的相除，结果也会是浮点数<br>\\>>> 1/2<br/>0.5         | python用于数据分析领域，<br>其使用者对数据类型不敏感，<br>更倾向理解1/2=0.5而不是0 |\n",
    "| 不等运算符  | 有两种写法 != 和 <>                                          | 只有!=一种写法                                               | <>不常用，删除保持语法的简洁。                               |\n",
    "| 列表推导    | 可以支持[n for n in a,b]这样的语法                           | 需要这样：[n for n in (a,b)]或[n for n in [a,b]]             | 语法检查更准确                                               |"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4ee14536",
   "metadata": {},
   "source": [
    "## 第4题\n",
    "使用numpy中的random函数生成一个50x1的随机矩阵，并用numpy中的reduce求和\n",
    "\n",
    "答：  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "ee5ac4b8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(50, 1)\n",
      "[-13.23669407]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "\n",
    "m=np.random.randn(50,1)\n",
    "print(m.shape)\n",
    "print(np.add.reduce(m))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4d89366a",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
